iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Modern Web

用 Node.js 打造後端 API系列 第 10

Day 10 - 完成Course CRUD功能

  • 分享至 

  • xImage
  •  

前言


在完成了與Bootcamp間的互動後,接著就來完成Course的CRUD功能

  • GET 請求單一課程
  • POST 新增課程到指定bootcamp
  • PUT 編輯課程
  • DELETE 刪除課程

請求單一課程


const course = await Course.findById(req.params.id).populate({
  path: 'bootcamp',
  select: 'name description'
});

新增課程


第一行的意思為把course model的bootcamp欄位定義為輸入的bootcampId
這樣新增的course時就能reference到bootcamp model

req.body.bootcamp = req.params.bootcampId;

const bootcamp = await Bootcamp.findById(req.params.bootcampId);

if (!bootcamp) {
  return next(
    new ErrorResponse(`Bootcamp not found with id ${req.params.bootcampId}`, 404)
  );
}

const course = await Course.create(req.body);

編輯課程


先確定有找到課程,且輸入格式正確但id錯誤時會跳出error
使用findByIdAndUpdate更新課程內容

let course = await Course.findById(req.params.id);

if (!course) {
  return next(
    new ErrorResponse(`No course with the id of ${req.params.id}`, 404)
  );
}

course = await Course.findByIdAndUpdate(req.params.id, req.body, {
  new: true,
  runValidators: true
});

刪除課程


方法和上述相同,找到課程後再將其移除就好了

await course.remove();

上一篇
Day 09 - 不同筆資料間的互動
下一篇
Day 11 - 計算課程平均費用
系列文
用 Node.js 打造後端 API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言